Generic programming for mesh algorithms: Implementing universally usable geometric components pdfauthor
نویسنده
چکیده
Geometric functionality is crucial for a variety of application domains, including computational mechanics. Typically, geometric tasks are embedded into a larger problem frame. Due to the diversity of tasks, geometric tools must often be combined to achieve the desired solution. As implementing geometric algorithms is difficult and time-consuming, reusing them is highly desirable. Unfortunately, traditional implementations are intimately tied to the underlying representations of the geometric data, and hence are not directly usable in a different context. Conventional approaches to implementing geometric tools are thus limited to copying the data via an API (or to a file), and calling an external routine (or application) application implementing the desired functionality or even implementing an ad-hoc solution, and have obvious drawbacks in terms of efficiency, composability, scalability or quality. Here, we present a radically different approach, concentrating on the case of algorithms working on cellular structures, for example meshes (tesselations, grids) of surfaces and solids. Exploiting the common underlying mathematical structure we define an abstract interface capturing this mathematical notion. Algorithms are implemented generically on top of this interface, thus making the implementations independent of any concrete representation issues. Special emphasis is placed on a separation of combinatorial and geometric aspects and on a general framework for associating arbitrary data to mesh entities of any dimension. A wide variety of reusable geometric tools is implemented in the open source C++ library GRAL. They can be combined and nested in very flexible ways to solve geometric task arising in computational mechanics, independently of the underlying data structures. We conclude by discussing some practical issues of the generic approach, including the quite competitive efficiency of generic components.
منابع مشابه
GrAL - The Grid Algorithms Library
Dedicated library support for mesh-level geometry components, central to numerical PDE solution, is scarce. We claim that the situation is due to the inadequacy of traditional design techniques for complex and variable data representations typical for meshes. As a solution, we introduce an approach based on generic programming, implemented in the C++ library GrAL, whose algorithms can be execut...
متن کاملGeneric Components for Petascale Adaptive Unstructured Mesh Simulations
In the traditional programming paradigm, data structures and algorithms are developed for specific data types and requirements. This leads to code redundancy and inflexibility thus not allowing effective code reuse for similar applications. One effective approach to increase code reuse is generic programming, which focuses on the development of efficient, reusable software libraries through sui...
متن کاملGeneric Components for Grid Data Structures and Algorithms with C++
Grids are fundamental data structures for representing geometric structures or their subdivisions. We propose a strategy for decoupling algorithms working on grids from the details of grid representations, using a generic programming approach in C++. Functionality of grid data structures is captured by a small set of primitives, divided into combinatorial and geometric ones. Special attention i...
متن کاملMesh algorithms for PDE with Sieve I: Mesh distribution
We have developed a new programming framework, called Sieve, to support parallel numerical PDE1 algorithms operating over distributed meshes. We have also developed a reference implementation of Sieve in C++ as a library of generic algorithms operating on distributed containers conforming to the Sieve interface. Sieve makes instances of the incidence relation, or arrows, the conceptual first-cl...
متن کاملA Generic Toolbox for the Grid Craftsman
Universally reusable tools for grid management tasks are scarce. We identify coupling of algorithms to data structures as main obstacle for reuse, and show how to overcome the difficulties by using generic programming. After introducing an abstract kernel of grid functionality, we present some universal generic grid tools based on that kernel which are usable for arbitrary grid data structures....
متن کامل